/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.camachosanchez.controler.jpa;

import com.camachosanchez.bean.Almacenes;
import com.camachosanchez.bean.Categorias;
import com.camachosanchez.bean.Despinches;
import com.camachosanchez.bean.DetalleAlineacion;
import com.camachosanchez.bean.DetalleControlCambioNeumatico;
import com.camachosanchez.bean.DetalleControlReencauche;
import com.camachosanchez.bean.DetalleInspeccionEquipo;
import com.camachosanchez.bean.DistribuidoresNeumaticos;
import com.camachosanchez.bean.EstadosMedicion;
import com.camachosanchez.bean.EstadosNeumaticos;
import com.camachosanchez.bean.FormasPago;
import com.camachosanchez.bean.MarcasNeumatico;
import com.camachosanchez.bean.MedicionComprobacion;
import com.camachosanchez.bean.ModelosBandaNeumatico;
import com.camachosanchez.bean.Neumaticos;
import com.camachosanchez.bean.TipoPiso;
import com.camachosanchez.bean.TiposBandaNeumatico;
import com.camachosanchez.bean.Usuarios;
import com.camachosanchez.controler.jpa.exceptions.IllegalOrphanException;
import com.camachosanchez.controler.jpa.exceptions.NonexistentEntityException;
import com.camachosanchez.util.JPAUtil;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityNotFoundException;
import javax.persistence.Query;

/**
 *
 * @author Rolando
 */
public class NeumaticosJpaController implements Serializable {

    public NeumaticosJpaController(EntityManagerFactory emf) {
        this.emf = emf;
    }
    private EntityManagerFactory emf = null;

    public EntityManager getEntityManager() {
        return JPAUtil.getEntityManagerFactory().createEntityManager();
    }

    public void create(Neumaticos neumaticos) {
        if (neumaticos.getDetalleControlCambioNeumaticoList() == null) {
            neumaticos.setDetalleControlCambioNeumaticoList(new ArrayList<DetalleControlCambioNeumatico>());
        }
        if (neumaticos.getDetalleInspeccionEquipoList() == null) {
            neumaticos.setDetalleInspeccionEquipoList(new ArrayList<DetalleInspeccionEquipo>());
        }
        if (neumaticos.getDetalleControlReencaucheList() == null) {
            neumaticos.setDetalleControlReencaucheList(new ArrayList<DetalleControlReencauche>());
        }
        if (neumaticos.getMedicionComprobacionList() == null) {
            neumaticos.setMedicionComprobacionList(new ArrayList<MedicionComprobacion>());
        }
        if (neumaticos.getDespinchesList() == null) {
            neumaticos.setDespinchesList(new ArrayList<Despinches>());
        }
        if (neumaticos.getDetalleAlineacionList() == null) {
            neumaticos.setDetalleAlineacionList(new ArrayList<DetalleAlineacion>());
        }
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            Usuarios idUsuario = neumaticos.getIdUsuario();
            if (idUsuario != null) {
                idUsuario = em.getReference(idUsuario.getClass(), idUsuario.getId());
                neumaticos.setIdUsuario(idUsuario);
            }
            TipoPiso tipoPiso = neumaticos.getTipoPiso();
            if (tipoPiso != null) {
                tipoPiso = em.getReference(tipoPiso.getClass(), tipoPiso.getId());
                neumaticos.setTipoPiso(tipoPiso);
            }
            TipoPiso tipoPisoInicial = neumaticos.getIdTipoPisoInicial();
            if (tipoPisoInicial != null) {
                tipoPisoInicial = em.getReference(tipoPisoInicial.getClass(), tipoPisoInicial.getId());
                neumaticos.setIdTipoPisoInicial(tipoPisoInicial);
            }
            ModelosBandaNeumatico idModelo = neumaticos.getIdModelo();
            if (idModelo != null) {
                idModelo = em.getReference(idModelo.getClass(), idModelo.getId());
                neumaticos.setIdModelo(idModelo);
            }
            TiposBandaNeumatico idBandaInicial = neumaticos.getIdBandaInicial();
            if (idBandaInicial != null) {
                idBandaInicial = em.getReference(idBandaInicial.getClass(), idBandaInicial.getId());
                neumaticos.setIdBandaInicial(idBandaInicial);
            }
            MarcasNeumatico idMarca = neumaticos.getIdMarca();
            if (idMarca != null) {
                idMarca = em.getReference(idMarca.getClass(), idMarca.getId());
                neumaticos.setIdMarca(idMarca);
            }
            FormasPago idFormaPago = neumaticos.getIdFormaPago();
            if (idFormaPago != null) {
                idFormaPago = em.getReference(idFormaPago.getClass(), idFormaPago.getId());
                neumaticos.setIdFormaPago(idFormaPago);
            }
            EstadosNeumaticos idEstado = neumaticos.getIdEstado();
            if (idEstado != null) {
                idEstado = em.getReference(idEstado.getClass(), idEstado.getId());
                neumaticos.setIdEstado(idEstado);
            }
            DistribuidoresNeumaticos idDistribuidor = neumaticos.getIdDistribuidor();
            if (idDistribuidor != null) {
                idDistribuidor = em.getReference(idDistribuidor.getClass(), idDistribuidor.getId());
                neumaticos.setIdDistribuidor(idDistribuidor);
            }
            Categorias idCategoria = neumaticos.getIdCategoria();
            if (idCategoria != null) {
                idCategoria = em.getReference(idCategoria.getClass(), idCategoria.getId());
                neumaticos.setIdCategoria(idCategoria);
            }
            Almacenes idAlmacen = neumaticos.getIdAlmacen();
            if (idAlmacen != null) {
                idAlmacen = em.getReference(idAlmacen.getClass(), idAlmacen.getId());
                neumaticos.setIdAlmacen(idAlmacen);
            }
            TiposBandaNeumatico idBanda = neumaticos.getIdBanda();
            if (idBanda != null) {
                idBanda = em.getReference(idBanda.getClass(), idBanda.getId());
                neumaticos.setIdBanda(idBanda);
            }
            EstadosMedicion idEstadoMedicion = neumaticos.getIdEstadoMedicion();
            if (idEstadoMedicion != null) {
                idEstadoMedicion = em.getReference(idEstadoMedicion.getClass(), idEstadoMedicion.getId());
                neumaticos.setIdEstadoMedicion(idEstadoMedicion);
            }
            List<DetalleControlCambioNeumatico> attachedDetalleControlCambioNeumaticoList = new ArrayList<DetalleControlCambioNeumatico>();
            for (DetalleControlCambioNeumatico detalleControlCambioNeumaticoListDetalleControlCambioNeumaticoToAttach : neumaticos.getDetalleControlCambioNeumaticoList()) {
                detalleControlCambioNeumaticoListDetalleControlCambioNeumaticoToAttach = em.getReference(detalleControlCambioNeumaticoListDetalleControlCambioNeumaticoToAttach.getClass(), detalleControlCambioNeumaticoListDetalleControlCambioNeumaticoToAttach.getId());
                attachedDetalleControlCambioNeumaticoList.add(detalleControlCambioNeumaticoListDetalleControlCambioNeumaticoToAttach);
            }
            neumaticos.setDetalleControlCambioNeumaticoList(attachedDetalleControlCambioNeumaticoList);
            List<DetalleInspeccionEquipo> attachedDetalleInspeccionEquipoList = new ArrayList<DetalleInspeccionEquipo>();
            for (DetalleInspeccionEquipo detalleInspeccionEquipoListDetalleInspeccionEquipoToAttach : neumaticos.getDetalleInspeccionEquipoList()) {
                detalleInspeccionEquipoListDetalleInspeccionEquipoToAttach = em.getReference(detalleInspeccionEquipoListDetalleInspeccionEquipoToAttach.getClass(), detalleInspeccionEquipoListDetalleInspeccionEquipoToAttach.getId());
                attachedDetalleInspeccionEquipoList.add(detalleInspeccionEquipoListDetalleInspeccionEquipoToAttach);
            }
            neumaticos.setDetalleInspeccionEquipoList(attachedDetalleInspeccionEquipoList);
            List<DetalleControlReencauche> attachedDetalleControlReencaucheList = new ArrayList<DetalleControlReencauche>();
            for (DetalleControlReencauche detalleControlReencaucheListDetalleControlReencaucheToAttach : neumaticos.getDetalleControlReencaucheList()) {
                detalleControlReencaucheListDetalleControlReencaucheToAttach = em.getReference(detalleControlReencaucheListDetalleControlReencaucheToAttach.getClass(), detalleControlReencaucheListDetalleControlReencaucheToAttach.getId());
                attachedDetalleControlReencaucheList.add(detalleControlReencaucheListDetalleControlReencaucheToAttach);
            }
            neumaticos.setDetalleControlReencaucheList(attachedDetalleControlReencaucheList);
            List<MedicionComprobacion> attachedMedicionComprobacionList = new ArrayList<MedicionComprobacion>();
            for (MedicionComprobacion medicionComprobacionListMedicionComprobacionToAttach : neumaticos.getMedicionComprobacionList()) {
                medicionComprobacionListMedicionComprobacionToAttach = em.getReference(medicionComprobacionListMedicionComprobacionToAttach.getClass(), medicionComprobacionListMedicionComprobacionToAttach.getId());
                attachedMedicionComprobacionList.add(medicionComprobacionListMedicionComprobacionToAttach);
            }
            neumaticos.setMedicionComprobacionList(attachedMedicionComprobacionList);
            List<Despinches> attachedDespinchesList = new ArrayList<Despinches>();
            for (Despinches despinchesListDespinchesToAttach : neumaticos.getDespinchesList()) {
                despinchesListDespinchesToAttach = em.getReference(despinchesListDespinchesToAttach.getClass(), despinchesListDespinchesToAttach.getId());
                attachedDespinchesList.add(despinchesListDespinchesToAttach);
            }
            neumaticos.setDespinchesList(attachedDespinchesList);
            List<DetalleAlineacion> attachedDetalleAlineacionList = new ArrayList<DetalleAlineacion>();
            for (DetalleAlineacion detalleAlineacionListDetalleAlineacionToAttach : neumaticos.getDetalleAlineacionList()) {
                detalleAlineacionListDetalleAlineacionToAttach = em.getReference(detalleAlineacionListDetalleAlineacionToAttach.getClass(), detalleAlineacionListDetalleAlineacionToAttach.getId());
                attachedDetalleAlineacionList.add(detalleAlineacionListDetalleAlineacionToAttach);
            }
            neumaticos.setDetalleAlineacionList(attachedDetalleAlineacionList);
            em.persist(neumaticos);
            if (idUsuario != null) {
                idUsuario.getNeumaticosList().add(neumaticos);
                idUsuario = em.merge(idUsuario);
            }
            if (tipoPiso != null) {
                tipoPiso.getNeumaticosList().add(neumaticos);
                tipoPiso = em.merge(tipoPiso);
            }
            if (tipoPisoInicial != null) {
                tipoPisoInicial.getNeumaticosList().add(neumaticos);
                tipoPisoInicial = em.merge(tipoPisoInicial);
            }
            if (idModelo != null) {
                idModelo.getNeumaticosList().add(neumaticos);
                idModelo = em.merge(idModelo);
            }
            if (idBandaInicial != null) {
                idBandaInicial.getNeumaticosList().add(neumaticos);
                idBandaInicial = em.merge(idBandaInicial);
            }
            if (idMarca != null) {
                idMarca.getNeumaticosList().add(neumaticos);
                idMarca = em.merge(idMarca);
            }
            if (idFormaPago != null) {
                idFormaPago.getNeumaticosList().add(neumaticos);
                idFormaPago = em.merge(idFormaPago);
            }
            if (idEstado != null) {
                idEstado.getNeumaticosList().add(neumaticos);
                idEstado = em.merge(idEstado);
            }
            if (idDistribuidor != null) {
                idDistribuidor.getNeumaticosList().add(neumaticos);
                idDistribuidor = em.merge(idDistribuidor);
            }
            if (idCategoria != null) {
                idCategoria.getNeumaticosList().add(neumaticos);
                idCategoria = em.merge(idCategoria);
            }
            if (idAlmacen != null) {
                idAlmacen.getNeumaticosList().add(neumaticos);
                idAlmacen = em.merge(idAlmacen);
            }
            if (idBanda != null) {
                idBanda.getNeumaticosList().add(neumaticos);
                idBanda = em.merge(idBanda);
            }
            if (idEstadoMedicion != null) {
                idEstadoMedicion.getNeumaticosList().add(neumaticos);
                idEstadoMedicion = em.merge(idEstadoMedicion);
            }
            for (DetalleControlCambioNeumatico detalleControlCambioNeumaticoListDetalleControlCambioNeumatico : neumaticos.getDetalleControlCambioNeumaticoList()) {
                Neumaticos oldIdNeumaticoOfDetalleControlCambioNeumaticoListDetalleControlCambioNeumatico = detalleControlCambioNeumaticoListDetalleControlCambioNeumatico.getIdNeumatico();
                detalleControlCambioNeumaticoListDetalleControlCambioNeumatico.setIdNeumatico(neumaticos);
                detalleControlCambioNeumaticoListDetalleControlCambioNeumatico = em.merge(detalleControlCambioNeumaticoListDetalleControlCambioNeumatico);
                if (oldIdNeumaticoOfDetalleControlCambioNeumaticoListDetalleControlCambioNeumatico != null) {
                    oldIdNeumaticoOfDetalleControlCambioNeumaticoListDetalleControlCambioNeumatico.getDetalleControlCambioNeumaticoList().remove(detalleControlCambioNeumaticoListDetalleControlCambioNeumatico);
                    oldIdNeumaticoOfDetalleControlCambioNeumaticoListDetalleControlCambioNeumatico = em.merge(oldIdNeumaticoOfDetalleControlCambioNeumaticoListDetalleControlCambioNeumatico);
                }
            }
            for (DetalleInspeccionEquipo detalleInspeccionEquipoListDetalleInspeccionEquipo : neumaticos.getDetalleInspeccionEquipoList()) {
                Neumaticos oldIdNeumaticoOfDetalleInspeccionEquipoListDetalleInspeccionEquipo = detalleInspeccionEquipoListDetalleInspeccionEquipo.getIdNeumatico();
                detalleInspeccionEquipoListDetalleInspeccionEquipo.setIdNeumatico(neumaticos);
                detalleInspeccionEquipoListDetalleInspeccionEquipo = em.merge(detalleInspeccionEquipoListDetalleInspeccionEquipo);
                if (oldIdNeumaticoOfDetalleInspeccionEquipoListDetalleInspeccionEquipo != null) {
                    oldIdNeumaticoOfDetalleInspeccionEquipoListDetalleInspeccionEquipo.getDetalleInspeccionEquipoList().remove(detalleInspeccionEquipoListDetalleInspeccionEquipo);
                    oldIdNeumaticoOfDetalleInspeccionEquipoListDetalleInspeccionEquipo = em.merge(oldIdNeumaticoOfDetalleInspeccionEquipoListDetalleInspeccionEquipo);
                }
            }
            for (DetalleControlReencauche detalleControlReencaucheListDetalleControlReencauche : neumaticos.getDetalleControlReencaucheList()) {
                Neumaticos oldIdNeumaticoOfDetalleControlReencaucheListDetalleControlReencauche = detalleControlReencaucheListDetalleControlReencauche.getIdNeumatico();
                detalleControlReencaucheListDetalleControlReencauche.setIdNeumatico(neumaticos);
                detalleControlReencaucheListDetalleControlReencauche = em.merge(detalleControlReencaucheListDetalleControlReencauche);
                if (oldIdNeumaticoOfDetalleControlReencaucheListDetalleControlReencauche != null) {
                    oldIdNeumaticoOfDetalleControlReencaucheListDetalleControlReencauche.getDetalleControlReencaucheList().remove(detalleControlReencaucheListDetalleControlReencauche);
                    oldIdNeumaticoOfDetalleControlReencaucheListDetalleControlReencauche = em.merge(oldIdNeumaticoOfDetalleControlReencaucheListDetalleControlReencauche);
                }
            }
            for (MedicionComprobacion medicionComprobacionListMedicionComprobacion : neumaticos.getMedicionComprobacionList()) {
                Neumaticos oldIdNeumaticoOfMedicionComprobacionListMedicionComprobacion = medicionComprobacionListMedicionComprobacion.getIdNeumatico();
                medicionComprobacionListMedicionComprobacion.setIdNeumatico(neumaticos);
                medicionComprobacionListMedicionComprobacion = em.merge(medicionComprobacionListMedicionComprobacion);
                if (oldIdNeumaticoOfMedicionComprobacionListMedicionComprobacion != null) {
                    oldIdNeumaticoOfMedicionComprobacionListMedicionComprobacion.getMedicionComprobacionList().remove(medicionComprobacionListMedicionComprobacion);
                    oldIdNeumaticoOfMedicionComprobacionListMedicionComprobacion = em.merge(oldIdNeumaticoOfMedicionComprobacionListMedicionComprobacion);
                }
            }
            for (Despinches despinchesListDespinches : neumaticos.getDespinchesList()) {
                Neumaticos oldIdNeumaticosOfDespinchesListDespinches = despinchesListDespinches.getIdNeumaticos();
                despinchesListDespinches.setIdNeumaticos(neumaticos);
                despinchesListDespinches = em.merge(despinchesListDespinches);
                if (oldIdNeumaticosOfDespinchesListDespinches != null) {
                    oldIdNeumaticosOfDespinchesListDespinches.getDespinchesList().remove(despinchesListDespinches);
                    oldIdNeumaticosOfDespinchesListDespinches = em.merge(oldIdNeumaticosOfDespinchesListDespinches);
                }
            }
            for (DetalleAlineacion detalleAlineacionListDetalleAlineacion : neumaticos.getDetalleAlineacionList()) {
                Neumaticos oldIdNeumaticoOfDetalleAlineacionListDetalleAlineacion = detalleAlineacionListDetalleAlineacion.getIdNeumatico();
                detalleAlineacionListDetalleAlineacion.setIdNeumatico(neumaticos);
                detalleAlineacionListDetalleAlineacion = em.merge(detalleAlineacionListDetalleAlineacion);
                if (oldIdNeumaticoOfDetalleAlineacionListDetalleAlineacion != null) {
                    oldIdNeumaticoOfDetalleAlineacionListDetalleAlineacion.getDetalleAlineacionList().remove(detalleAlineacionListDetalleAlineacion);
                    oldIdNeumaticoOfDetalleAlineacionListDetalleAlineacion = em.merge(oldIdNeumaticoOfDetalleAlineacionListDetalleAlineacion);
                }
            }
            em.getTransaction().commit();
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }

    public void edit(Neumaticos neumaticos) throws IllegalOrphanException, NonexistentEntityException, Exception {
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            Neumaticos persistentNeumaticos = em.find(Neumaticos.class, neumaticos.getId());
            Usuarios idUsuarioOld = persistentNeumaticos.getIdUsuario();
            Usuarios idUsuarioNew = neumaticos.getIdUsuario();
            TipoPiso tipoPisoOld = persistentNeumaticos.getTipoPiso();
            TipoPiso tipoPisoNew = neumaticos.getTipoPiso();
            TipoPiso tipoPisoInicialOld = persistentNeumaticos.getTipoPiso();
            TipoPiso tipoPisoInicialNew = neumaticos.getTipoPiso();
            ModelosBandaNeumatico idModeloOld = persistentNeumaticos.getIdModelo();
            ModelosBandaNeumatico idModeloNew = neumaticos.getIdModelo();
            TiposBandaNeumatico idBandaInicialOld = persistentNeumaticos.getIdBandaInicial();
            TiposBandaNeumatico idBandaInicialNew = neumaticos.getIdBandaInicial();
            MarcasNeumatico idMarcaOld = persistentNeumaticos.getIdMarca();
            MarcasNeumatico idMarcaNew = neumaticos.getIdMarca();
            FormasPago idFormaPagoOld = persistentNeumaticos.getIdFormaPago();
            FormasPago idFormaPagoNew = neumaticos.getIdFormaPago();
            EstadosNeumaticos idEstadoOld = persistentNeumaticos.getIdEstado();
            EstadosNeumaticos idEstadoNew = neumaticos.getIdEstado();
            DistribuidoresNeumaticos idDistribuidorOld = persistentNeumaticos.getIdDistribuidor();
            DistribuidoresNeumaticos idDistribuidorNew = neumaticos.getIdDistribuidor();
            Categorias idCategoriaOld = persistentNeumaticos.getIdCategoria();
            Categorias idCategoriaNew = neumaticos.getIdCategoria();
            Almacenes idAlmacenOld = persistentNeumaticos.getIdAlmacen();
            Almacenes idAlmacenNew = neumaticos.getIdAlmacen();
            TiposBandaNeumatico idBandaOld = persistentNeumaticos.getIdBanda();
            TiposBandaNeumatico idBandaNew = neumaticos.getIdBanda();
            EstadosMedicion idEstadoMedicionOld = persistentNeumaticos.getIdEstadoMedicion();
            EstadosMedicion idEstadoMedicionNew = neumaticos.getIdEstadoMedicion();
            List<DetalleControlCambioNeumatico> detalleControlCambioNeumaticoListOld = persistentNeumaticos.getDetalleControlCambioNeumaticoList();
            List<DetalleControlCambioNeumatico> detalleControlCambioNeumaticoListNew = neumaticos.getDetalleControlCambioNeumaticoList();
            List<DetalleInspeccionEquipo> detalleInspeccionEquipoListOld = persistentNeumaticos.getDetalleInspeccionEquipoList();
            List<DetalleInspeccionEquipo> detalleInspeccionEquipoListNew = neumaticos.getDetalleInspeccionEquipoList();
            List<DetalleControlReencauche> detalleControlReencaucheListOld = persistentNeumaticos.getDetalleControlReencaucheList();
            List<DetalleControlReencauche> detalleControlReencaucheListNew = neumaticos.getDetalleControlReencaucheList();
            List<MedicionComprobacion> medicionComprobacionListOld = persistentNeumaticos.getMedicionComprobacionList();
            List<MedicionComprobacion> medicionComprobacionListNew = neumaticos.getMedicionComprobacionList();
            List<Despinches> despinchesListOld = persistentNeumaticos.getDespinchesList();
            List<Despinches> despinchesListNew = neumaticos.getDespinchesList();
            List<DetalleAlineacion> detalleAlineacionListOld = persistentNeumaticos.getDetalleAlineacionList();
            List<DetalleAlineacion> detalleAlineacionListNew = neumaticos.getDetalleAlineacionList();
            List<String> illegalOrphanMessages = null;
            for (DetalleControlCambioNeumatico detalleControlCambioNeumaticoListOldDetalleControlCambioNeumatico : detalleControlCambioNeumaticoListOld) {
                if (!detalleControlCambioNeumaticoListNew.contains(detalleControlCambioNeumaticoListOldDetalleControlCambioNeumatico)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain DetalleControlCambioNeumatico " + detalleControlCambioNeumaticoListOldDetalleControlCambioNeumatico + " since its idNeumatico field is not nullable.");
                }
            }
            for (DetalleInspeccionEquipo detalleInspeccionEquipoListOldDetalleInspeccionEquipo : detalleInspeccionEquipoListOld) {
                if (!detalleInspeccionEquipoListNew.contains(detalleInspeccionEquipoListOldDetalleInspeccionEquipo)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain DetalleInspeccionEquipo " + detalleInspeccionEquipoListOldDetalleInspeccionEquipo + " since its idNeumatico field is not nullable.");
                }
            }
            for (DetalleControlReencauche detalleControlReencaucheListOldDetalleControlReencauche : detalleControlReencaucheListOld) {
                if (!detalleControlReencaucheListNew.contains(detalleControlReencaucheListOldDetalleControlReencauche)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain DetalleControlReencauche " + detalleControlReencaucheListOldDetalleControlReencauche + " since its idNeumatico field is not nullable.");
                }
            }
            for (MedicionComprobacion medicionComprobacionListOldMedicionComprobacion : medicionComprobacionListOld) {
                if (!medicionComprobacionListNew.contains(medicionComprobacionListOldMedicionComprobacion)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain MedicionComprobacion " + medicionComprobacionListOldMedicionComprobacion + " since its idNeumatico field is not nullable.");
                }
            }
            for (Despinches despinchesListOldDespinches : despinchesListOld) {
                if (!despinchesListNew.contains(despinchesListOldDespinches)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain Despinches " + despinchesListOldDespinches + " since its idNeumaticos field is not nullable.");
                }
            }
            if (illegalOrphanMessages != null) {
                throw new IllegalOrphanException(illegalOrphanMessages);
            }
            if (idUsuarioNew != null) {
                idUsuarioNew = em.getReference(idUsuarioNew.getClass(), idUsuarioNew.getId());
                neumaticos.setIdUsuario(idUsuarioNew);
            }
            if (tipoPisoNew != null) {
                tipoPisoNew = em.getReference(tipoPisoNew.getClass(), tipoPisoNew.getId());
                neumaticos.setTipoPiso(tipoPisoNew);
            }
            if (tipoPisoInicialNew != null) {
                tipoPisoInicialNew = em.getReference(tipoPisoInicialNew.getClass(), tipoPisoInicialNew.getId());
                neumaticos.setIdTipoPisoInicial(tipoPisoInicialNew);
            }
            if (idModeloNew != null) {
                idModeloNew = em.getReference(idModeloNew.getClass(), idModeloNew.getId());
                neumaticos.setIdModelo(idModeloNew);
            }
            if (idBandaInicialNew != null) {
                idBandaInicialNew = em.getReference(idBandaInicialNew.getClass(), idBandaInicialNew.getId());
                neumaticos.setIdBandaInicial(idBandaInicialNew);
            }
            if (idMarcaNew != null) {
                idMarcaNew = em.getReference(idMarcaNew.getClass(), idMarcaNew.getId());
                neumaticos.setIdMarca(idMarcaNew);
            }
            if (idFormaPagoNew != null) {
                idFormaPagoNew = em.getReference(idFormaPagoNew.getClass(), idFormaPagoNew.getId());
                neumaticos.setIdFormaPago(idFormaPagoNew);
            }
            if (idEstadoNew != null) {
                idEstadoNew = em.getReference(idEstadoNew.getClass(), idEstadoNew.getId());
                neumaticos.setIdEstado(idEstadoNew);
            }
            if (idDistribuidorNew != null) {
                idDistribuidorNew = em.getReference(idDistribuidorNew.getClass(), idDistribuidorNew.getId());
                neumaticos.setIdDistribuidor(idDistribuidorNew);
            }
            if (idCategoriaNew != null) {
                idCategoriaNew = em.getReference(idCategoriaNew.getClass(), idCategoriaNew.getId());
                neumaticos.setIdCategoria(idCategoriaNew);
            }
            if (idAlmacenNew != null) {
                idAlmacenNew = em.getReference(idAlmacenNew.getClass(), idAlmacenNew.getId());
                neumaticos.setIdAlmacen(idAlmacenNew);
            }
            if (idBandaNew != null) {
                idBandaNew = em.getReference(idBandaNew.getClass(), idBandaNew.getId());
                neumaticos.setIdBanda(idBandaNew);
            }
            if (idEstadoMedicionNew != null) {
                idEstadoMedicionNew = em.getReference(idEstadoMedicionNew.getClass(), idEstadoMedicionNew.getId());
                neumaticos.setIdEstadoMedicion(idEstadoMedicionNew);
            }
            List<DetalleControlCambioNeumatico> attachedDetalleControlCambioNeumaticoListNew = new ArrayList<DetalleControlCambioNeumatico>();
            for (DetalleControlCambioNeumatico detalleControlCambioNeumaticoListNewDetalleControlCambioNeumaticoToAttach : detalleControlCambioNeumaticoListNew) {
                detalleControlCambioNeumaticoListNewDetalleControlCambioNeumaticoToAttach = em.getReference(detalleControlCambioNeumaticoListNewDetalleControlCambioNeumaticoToAttach.getClass(), detalleControlCambioNeumaticoListNewDetalleControlCambioNeumaticoToAttach.getId());
                attachedDetalleControlCambioNeumaticoListNew.add(detalleControlCambioNeumaticoListNewDetalleControlCambioNeumaticoToAttach);
            }
            detalleControlCambioNeumaticoListNew = attachedDetalleControlCambioNeumaticoListNew;
            neumaticos.setDetalleControlCambioNeumaticoList(detalleControlCambioNeumaticoListNew);
            List<DetalleInspeccionEquipo> attachedDetalleInspeccionEquipoListNew = new ArrayList<DetalleInspeccionEquipo>();
            for (DetalleInspeccionEquipo detalleInspeccionEquipoListNewDetalleInspeccionEquipoToAttach : detalleInspeccionEquipoListNew) {
                detalleInspeccionEquipoListNewDetalleInspeccionEquipoToAttach = em.getReference(detalleInspeccionEquipoListNewDetalleInspeccionEquipoToAttach.getClass(), detalleInspeccionEquipoListNewDetalleInspeccionEquipoToAttach.getId());
                attachedDetalleInspeccionEquipoListNew.add(detalleInspeccionEquipoListNewDetalleInspeccionEquipoToAttach);
            }
            detalleInspeccionEquipoListNew = attachedDetalleInspeccionEquipoListNew;
            neumaticos.setDetalleInspeccionEquipoList(detalleInspeccionEquipoListNew);
            List<DetalleControlReencauche> attachedDetalleControlReencaucheListNew = new ArrayList<DetalleControlReencauche>();
            for (DetalleControlReencauche detalleControlReencaucheListNewDetalleControlReencaucheToAttach : detalleControlReencaucheListNew) {
                detalleControlReencaucheListNewDetalleControlReencaucheToAttach = em.getReference(detalleControlReencaucheListNewDetalleControlReencaucheToAttach.getClass(), detalleControlReencaucheListNewDetalleControlReencaucheToAttach.getId());
                attachedDetalleControlReencaucheListNew.add(detalleControlReencaucheListNewDetalleControlReencaucheToAttach);
            }
            detalleControlReencaucheListNew = attachedDetalleControlReencaucheListNew;
            neumaticos.setDetalleControlReencaucheList(detalleControlReencaucheListNew);
            List<MedicionComprobacion> attachedMedicionComprobacionListNew = new ArrayList<MedicionComprobacion>();
            for (MedicionComprobacion medicionComprobacionListNewMedicionComprobacionToAttach : medicionComprobacionListNew) {
                medicionComprobacionListNewMedicionComprobacionToAttach = em.getReference(medicionComprobacionListNewMedicionComprobacionToAttach.getClass(), medicionComprobacionListNewMedicionComprobacionToAttach.getId());
                attachedMedicionComprobacionListNew.add(medicionComprobacionListNewMedicionComprobacionToAttach);
            }
            medicionComprobacionListNew = attachedMedicionComprobacionListNew;
            neumaticos.setMedicionComprobacionList(medicionComprobacionListNew);
            List<Despinches> attachedDespinchesListNew = new ArrayList<Despinches>();
            for (Despinches despinchesListNewDespinchesToAttach : despinchesListNew) {
                despinchesListNewDespinchesToAttach = em.getReference(despinchesListNewDespinchesToAttach.getClass(), despinchesListNewDespinchesToAttach.getId());
                attachedDespinchesListNew.add(despinchesListNewDespinchesToAttach);
            }
            despinchesListNew = attachedDespinchesListNew;
            neumaticos.setDespinchesList(despinchesListNew);
            List<DetalleAlineacion> attachedDetalleAlineacionListNew = new ArrayList<DetalleAlineacion>();
            for (DetalleAlineacion detalleAlineacionListNewDetalleAlineacionToAttach : detalleAlineacionListNew) {
                detalleAlineacionListNewDetalleAlineacionToAttach = em.getReference(detalleAlineacionListNewDetalleAlineacionToAttach.getClass(), detalleAlineacionListNewDetalleAlineacionToAttach.getId());
                attachedDetalleAlineacionListNew.add(detalleAlineacionListNewDetalleAlineacionToAttach);
            }
            detalleAlineacionListNew = attachedDetalleAlineacionListNew;
            neumaticos.setDetalleAlineacionList(detalleAlineacionListNew);
            neumaticos = em.merge(neumaticos);
            if (idUsuarioOld != null && !idUsuarioOld.equals(idUsuarioNew)) {
                idUsuarioOld.getNeumaticosList().remove(neumaticos);
                idUsuarioOld = em.merge(idUsuarioOld);
            }
            if (idUsuarioNew != null && !idUsuarioNew.equals(idUsuarioOld)) {
                idUsuarioNew.getNeumaticosList().add(neumaticos);
                idUsuarioNew = em.merge(idUsuarioNew);
            }
            if (tipoPisoOld != null && !tipoPisoOld.equals(tipoPisoNew)) {
                tipoPisoOld.getNeumaticosList().remove(neumaticos);
                tipoPisoOld = em.merge(tipoPisoOld);
            }
            if (tipoPisoNew != null && !tipoPisoNew.equals(tipoPisoOld)) {
                tipoPisoNew.getNeumaticosList().add(neumaticos);
                tipoPisoNew = em.merge(tipoPisoNew);
            }
            if (tipoPisoInicialOld != null && !tipoPisoInicialOld.equals(tipoPisoInicialNew)) {
                tipoPisoInicialOld.getNeumaticosList().remove(neumaticos);
                tipoPisoInicialOld = em.merge(tipoPisoInicialOld);
            }
            if (tipoPisoInicialNew != null && !tipoPisoNew.equals(tipoPisoInicialOld)) {
                tipoPisoInicialNew.getNeumaticosList().add(neumaticos);
                tipoPisoInicialNew = em.merge(tipoPisoInicialNew);
            }
            if (idModeloOld != null && !idModeloOld.equals(idModeloNew)) {
                idModeloOld.getNeumaticosList().remove(neumaticos);
                idModeloOld = em.merge(idModeloOld);
            }
            if (idModeloNew != null && !idModeloNew.equals(idModeloOld)) {
                idModeloNew.getNeumaticosList().add(neumaticos);
                idModeloNew = em.merge(idModeloNew);
            }
            if (idBandaInicialOld != null && !idBandaInicialOld.equals(idBandaInicialNew)) {
                idBandaInicialOld.getNeumaticosList().remove(neumaticos);
                idBandaInicialOld = em.merge(idBandaInicialOld);
            }
            if (idBandaInicialNew != null && !idBandaInicialNew.equals(idBandaInicialOld)) {
                idBandaInicialNew.getNeumaticosList().add(neumaticos);
                idBandaInicialNew = em.merge(idBandaInicialNew);
            }
            if (idMarcaOld != null && !idMarcaOld.equals(idMarcaNew)) {
                idMarcaOld.getNeumaticosList().remove(neumaticos);
                idMarcaOld = em.merge(idMarcaOld);
            }
            if (idMarcaNew != null && !idMarcaNew.equals(idMarcaOld)) {
                idMarcaNew.getNeumaticosList().add(neumaticos);
                idMarcaNew = em.merge(idMarcaNew);
            }
            if (idFormaPagoOld != null && !idFormaPagoOld.equals(idFormaPagoNew)) {
                idFormaPagoOld.getNeumaticosList().remove(neumaticos);
                idFormaPagoOld = em.merge(idFormaPagoOld);
            }
            if (idFormaPagoNew != null && !idFormaPagoNew.equals(idFormaPagoOld)) {
                idFormaPagoNew.getNeumaticosList().add(neumaticos);
                idFormaPagoNew = em.merge(idFormaPagoNew);
            }
            if (idEstadoOld != null && !idEstadoOld.equals(idEstadoNew)) {
                idEstadoOld.getNeumaticosList().remove(neumaticos);
                idEstadoOld = em.merge(idEstadoOld);
            }
            if (idEstadoNew != null && !idEstadoNew.equals(idEstadoOld)) {
                idEstadoNew.getNeumaticosList().add(neumaticos);
                idEstadoNew = em.merge(idEstadoNew);
            }
            if (idDistribuidorOld != null && !idDistribuidorOld.equals(idDistribuidorNew)) {
                idDistribuidorOld.getNeumaticosList().remove(neumaticos);
                idDistribuidorOld = em.merge(idDistribuidorOld);
            }
            if (idDistribuidorNew != null && !idDistribuidorNew.equals(idDistribuidorOld)) {
                idDistribuidorNew.getNeumaticosList().add(neumaticos);
                idDistribuidorNew = em.merge(idDistribuidorNew);
            }
            if (idCategoriaOld != null && !idCategoriaOld.equals(idCategoriaNew)) {
                idCategoriaOld.getNeumaticosList().remove(neumaticos);
                idCategoriaOld = em.merge(idCategoriaOld);
            }
            if (idCategoriaNew != null && !idCategoriaNew.equals(idCategoriaOld)) {
                idCategoriaNew.getNeumaticosList().add(neumaticos);
                idCategoriaNew = em.merge(idCategoriaNew);
            }
            if (idAlmacenOld != null && !idAlmacenOld.equals(idAlmacenNew)) {
                idAlmacenOld.getNeumaticosList().remove(neumaticos);
                idAlmacenOld = em.merge(idAlmacenOld);
            }
            if (idAlmacenNew != null && !idAlmacenNew.equals(idAlmacenOld)) {
                idAlmacenNew.getNeumaticosList().add(neumaticos);
                idAlmacenNew = em.merge(idAlmacenNew);
            }
            if (idBandaOld != null && !idBandaOld.equals(idBandaNew)) {
                idBandaOld.getNeumaticosList().remove(neumaticos);
                idBandaOld = em.merge(idBandaOld);
            }
            if (idBandaNew != null && !idBandaNew.equals(idBandaOld)) {
                idBandaNew.getNeumaticosList().add(neumaticos);
                idBandaNew = em.merge(idBandaNew);
            }
            if (idEstadoMedicionOld != null && !idEstadoMedicionOld.equals(idEstadoMedicionNew)) {
                idEstadoMedicionOld.getNeumaticosList().remove(neumaticos);
                idEstadoMedicionOld = em.merge(idEstadoMedicionOld);
            }
            if (idEstadoMedicionNew != null && !idEstadoMedicionNew.equals(idEstadoMedicionOld)) {
                idEstadoMedicionNew.getNeumaticosList().add(neumaticos);
                idEstadoMedicionNew = em.merge(idEstadoMedicionNew);
            }
            for (DetalleControlCambioNeumatico detalleControlCambioNeumaticoListNewDetalleControlCambioNeumatico : detalleControlCambioNeumaticoListNew) {
                if (!detalleControlCambioNeumaticoListOld.contains(detalleControlCambioNeumaticoListNewDetalleControlCambioNeumatico)) {
                    Neumaticos oldIdNeumaticoOfDetalleControlCambioNeumaticoListNewDetalleControlCambioNeumatico = detalleControlCambioNeumaticoListNewDetalleControlCambioNeumatico.getIdNeumatico();
                    detalleControlCambioNeumaticoListNewDetalleControlCambioNeumatico.setIdNeumatico(neumaticos);
                    detalleControlCambioNeumaticoListNewDetalleControlCambioNeumatico = em.merge(detalleControlCambioNeumaticoListNewDetalleControlCambioNeumatico);
                    if (oldIdNeumaticoOfDetalleControlCambioNeumaticoListNewDetalleControlCambioNeumatico != null && !oldIdNeumaticoOfDetalleControlCambioNeumaticoListNewDetalleControlCambioNeumatico.equals(neumaticos)) {
                        oldIdNeumaticoOfDetalleControlCambioNeumaticoListNewDetalleControlCambioNeumatico.getDetalleControlCambioNeumaticoList().remove(detalleControlCambioNeumaticoListNewDetalleControlCambioNeumatico);
                        oldIdNeumaticoOfDetalleControlCambioNeumaticoListNewDetalleControlCambioNeumatico = em.merge(oldIdNeumaticoOfDetalleControlCambioNeumaticoListNewDetalleControlCambioNeumatico);
                    }
                }
            }
            for (DetalleInspeccionEquipo detalleInspeccionEquipoListNewDetalleInspeccionEquipo : detalleInspeccionEquipoListNew) {
                if (!detalleInspeccionEquipoListOld.contains(detalleInspeccionEquipoListNewDetalleInspeccionEquipo)) {
                    Neumaticos oldIdNeumaticoOfDetalleInspeccionEquipoListNewDetalleInspeccionEquipo = detalleInspeccionEquipoListNewDetalleInspeccionEquipo.getIdNeumatico();
                    detalleInspeccionEquipoListNewDetalleInspeccionEquipo.setIdNeumatico(neumaticos);
                    detalleInspeccionEquipoListNewDetalleInspeccionEquipo = em.merge(detalleInspeccionEquipoListNewDetalleInspeccionEquipo);
                    if (oldIdNeumaticoOfDetalleInspeccionEquipoListNewDetalleInspeccionEquipo != null && !oldIdNeumaticoOfDetalleInspeccionEquipoListNewDetalleInspeccionEquipo.equals(neumaticos)) {
                        oldIdNeumaticoOfDetalleInspeccionEquipoListNewDetalleInspeccionEquipo.getDetalleInspeccionEquipoList().remove(detalleInspeccionEquipoListNewDetalleInspeccionEquipo);
                        oldIdNeumaticoOfDetalleInspeccionEquipoListNewDetalleInspeccionEquipo = em.merge(oldIdNeumaticoOfDetalleInspeccionEquipoListNewDetalleInspeccionEquipo);
                    }
                }
            }
            for (DetalleControlReencauche detalleControlReencaucheListNewDetalleControlReencauche : detalleControlReencaucheListNew) {
                if (!detalleControlReencaucheListOld.contains(detalleControlReencaucheListNewDetalleControlReencauche)) {
                    Neumaticos oldIdNeumaticoOfDetalleControlReencaucheListNewDetalleControlReencauche = detalleControlReencaucheListNewDetalleControlReencauche.getIdNeumatico();
                    detalleControlReencaucheListNewDetalleControlReencauche.setIdNeumatico(neumaticos);
                    detalleControlReencaucheListNewDetalleControlReencauche = em.merge(detalleControlReencaucheListNewDetalleControlReencauche);
                    if (oldIdNeumaticoOfDetalleControlReencaucheListNewDetalleControlReencauche != null && !oldIdNeumaticoOfDetalleControlReencaucheListNewDetalleControlReencauche.equals(neumaticos)) {
                        oldIdNeumaticoOfDetalleControlReencaucheListNewDetalleControlReencauche.getDetalleControlReencaucheList().remove(detalleControlReencaucheListNewDetalleControlReencauche);
                        oldIdNeumaticoOfDetalleControlReencaucheListNewDetalleControlReencauche = em.merge(oldIdNeumaticoOfDetalleControlReencaucheListNewDetalleControlReencauche);
                    }
                }
            }
            for (MedicionComprobacion medicionComprobacionListNewMedicionComprobacion : medicionComprobacionListNew) {
                if (!medicionComprobacionListOld.contains(medicionComprobacionListNewMedicionComprobacion)) {
                    Neumaticos oldIdNeumaticoOfMedicionComprobacionListNewMedicionComprobacion = medicionComprobacionListNewMedicionComprobacion.getIdNeumatico();
                    medicionComprobacionListNewMedicionComprobacion.setIdNeumatico(neumaticos);
                    medicionComprobacionListNewMedicionComprobacion = em.merge(medicionComprobacionListNewMedicionComprobacion);
                    if (oldIdNeumaticoOfMedicionComprobacionListNewMedicionComprobacion != null && !oldIdNeumaticoOfMedicionComprobacionListNewMedicionComprobacion.equals(neumaticos)) {
                        oldIdNeumaticoOfMedicionComprobacionListNewMedicionComprobacion.getMedicionComprobacionList().remove(medicionComprobacionListNewMedicionComprobacion);
                        oldIdNeumaticoOfMedicionComprobacionListNewMedicionComprobacion = em.merge(oldIdNeumaticoOfMedicionComprobacionListNewMedicionComprobacion);
                    }
                }
            }
            for (Despinches despinchesListNewDespinches : despinchesListNew) {
                if (!despinchesListOld.contains(despinchesListNewDespinches)) {
                    Neumaticos oldIdNeumaticosOfDespinchesListNewDespinches = despinchesListNewDespinches.getIdNeumaticos();
                    despinchesListNewDespinches.setIdNeumaticos(neumaticos);
                    despinchesListNewDespinches = em.merge(despinchesListNewDespinches);
                    if (oldIdNeumaticosOfDespinchesListNewDespinches != null && !oldIdNeumaticosOfDespinchesListNewDespinches.equals(neumaticos)) {
                        oldIdNeumaticosOfDespinchesListNewDespinches.getDespinchesList().remove(despinchesListNewDespinches);
                        oldIdNeumaticosOfDespinchesListNewDespinches = em.merge(oldIdNeumaticosOfDespinchesListNewDespinches);
                    }
                }
            }
            for (DetalleAlineacion detalleAlineacionListOldDetalleAlineacion : detalleAlineacionListOld) {
                if (!detalleAlineacionListNew.contains(detalleAlineacionListOldDetalleAlineacion)) {
                    detalleAlineacionListOldDetalleAlineacion.setIdNeumatico(null);
                    detalleAlineacionListOldDetalleAlineacion = em.merge(detalleAlineacionListOldDetalleAlineacion);
                }
            }
            for (DetalleAlineacion detalleAlineacionListNewDetalleAlineacion : detalleAlineacionListNew) {
                if (!detalleAlineacionListOld.contains(detalleAlineacionListNewDetalleAlineacion)) {
                    Neumaticos oldIdNeumaticoOfDetalleAlineacionListNewDetalleAlineacion = detalleAlineacionListNewDetalleAlineacion.getIdNeumatico();
                    detalleAlineacionListNewDetalleAlineacion.setIdNeumatico(neumaticos);
                    detalleAlineacionListNewDetalleAlineacion = em.merge(detalleAlineacionListNewDetalleAlineacion);
                    if (oldIdNeumaticoOfDetalleAlineacionListNewDetalleAlineacion != null && !oldIdNeumaticoOfDetalleAlineacionListNewDetalleAlineacion.equals(neumaticos)) {
                        oldIdNeumaticoOfDetalleAlineacionListNewDetalleAlineacion.getDetalleAlineacionList().remove(detalleAlineacionListNewDetalleAlineacion);
                        oldIdNeumaticoOfDetalleAlineacionListNewDetalleAlineacion = em.merge(oldIdNeumaticoOfDetalleAlineacionListNewDetalleAlineacion);
                    }
                }
            }
            em.getTransaction().commit();
        } catch (Exception ex) {
            String msg = ex.getLocalizedMessage();
            if (msg == null || msg.length() == 0) {
                Integer id = neumaticos.getId();
                if (findNeumaticos(id) == null) {
                    throw new NonexistentEntityException("The neumaticos with id " + id + " no longer exists.");
                }
            }
            throw ex;
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }

    public void destroy(Integer id) throws IllegalOrphanException, NonexistentEntityException {
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            Neumaticos neumaticos;
            try {
                neumaticos = em.getReference(Neumaticos.class, id);
                neumaticos.getId();
            } catch (EntityNotFoundException enfe) {
                throw new NonexistentEntityException("The neumaticos with id " + id + " no longer exists.", enfe);
            }
            List<String> illegalOrphanMessages = null;
            List<DetalleControlCambioNeumatico> detalleControlCambioNeumaticoListOrphanCheck = neumaticos.getDetalleControlCambioNeumaticoList();
            for (DetalleControlCambioNeumatico detalleControlCambioNeumaticoListOrphanCheckDetalleControlCambioNeumatico : detalleControlCambioNeumaticoListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This Neumaticos (" + neumaticos + ") cannot be destroyed since the DetalleControlCambioNeumatico " + detalleControlCambioNeumaticoListOrphanCheckDetalleControlCambioNeumatico + " in its detalleControlCambioNeumaticoList field has a non-nullable idNeumatico field.");
            }
            List<DetalleInspeccionEquipo> detalleInspeccionEquipoListOrphanCheck = neumaticos.getDetalleInspeccionEquipoList();
            for (DetalleInspeccionEquipo detalleInspeccionEquipoListOrphanCheckDetalleInspeccionEquipo : detalleInspeccionEquipoListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This Neumaticos (" + neumaticos + ") cannot be destroyed since the DetalleInspeccionEquipo " + detalleInspeccionEquipoListOrphanCheckDetalleInspeccionEquipo + " in its detalleInspeccionEquipoList field has a non-nullable idNeumatico field.");
            }
            List<DetalleControlReencauche> detalleControlReencaucheListOrphanCheck = neumaticos.getDetalleControlReencaucheList();
            for (DetalleControlReencauche detalleControlReencaucheListOrphanCheckDetalleControlReencauche : detalleControlReencaucheListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This Neumaticos (" + neumaticos + ") cannot be destroyed since the DetalleControlReencauche " + detalleControlReencaucheListOrphanCheckDetalleControlReencauche + " in its detalleControlReencaucheList field has a non-nullable idNeumatico field.");
            }
            List<MedicionComprobacion> medicionComprobacionListOrphanCheck = neumaticos.getMedicionComprobacionList();
            for (MedicionComprobacion medicionComprobacionListOrphanCheckMedicionComprobacion : medicionComprobacionListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This Neumaticos (" + neumaticos + ") cannot be destroyed since the MedicionComprobacion " + medicionComprobacionListOrphanCheckMedicionComprobacion + " in its medicionComprobacionList field has a non-nullable idNeumatico field.");
            }
            List<Despinches> despinchesListOrphanCheck = neumaticos.getDespinchesList();
            for (Despinches despinchesListOrphanCheckDespinches : despinchesListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This Neumaticos (" + neumaticos + ") cannot be destroyed since the Despinches " + despinchesListOrphanCheckDespinches + " in its despinchesList field has a non-nullable idNeumaticos field.");
            }
            if (illegalOrphanMessages != null) {
                throw new IllegalOrphanException(illegalOrphanMessages);
            }
            Usuarios idUsuario = neumaticos.getIdUsuario();
            if (idUsuario != null) {
                idUsuario.getNeumaticosList().remove(neumaticos);
                idUsuario = em.merge(idUsuario);
            }
            TipoPiso tipoPiso = neumaticos.getTipoPiso();
            if (tipoPiso != null) {
                tipoPiso.getNeumaticosList().remove(neumaticos);
                tipoPiso = em.merge(tipoPiso);
            }
            TipoPiso tipoPisoInicial = neumaticos.getIdTipoPisoInicial();
            if (tipoPisoInicial != null) {
                tipoPisoInicial.getNeumaticosList().remove(neumaticos);
                tipoPisoInicial = em.merge(tipoPisoInicial);
            }
            ModelosBandaNeumatico idModelo = neumaticos.getIdModelo();
            if (idModelo != null) {
                idModelo.getNeumaticosList().remove(neumaticos);
                idModelo = em.merge(idModelo);
            }
            TiposBandaNeumatico idBandaInicial = neumaticos.getIdBandaInicial();
            if (idBandaInicial != null) {
                idBandaInicial.getNeumaticosList().remove(neumaticos);
                idBandaInicial = em.merge(idBandaInicial);
            }
            MarcasNeumatico idMarca = neumaticos.getIdMarca();
            if (idMarca != null) {
                idMarca.getNeumaticosList().remove(neumaticos);
                idMarca = em.merge(idMarca);
            }
            FormasPago idFormaPago = neumaticos.getIdFormaPago();
            if (idFormaPago != null) {
                idFormaPago.getNeumaticosList().remove(neumaticos);
                idFormaPago = em.merge(idFormaPago);
            }
            EstadosNeumaticos idEstado = neumaticos.getIdEstado();
            if (idEstado != null) {
                idEstado.getNeumaticosList().remove(neumaticos);
                idEstado = em.merge(idEstado);
            }
            DistribuidoresNeumaticos idDistribuidor = neumaticos.getIdDistribuidor();
            if (idDistribuidor != null) {
                idDistribuidor.getNeumaticosList().remove(neumaticos);
                idDistribuidor = em.merge(idDistribuidor);
            }
            Categorias idCategoria = neumaticos.getIdCategoria();
            if (idCategoria != null) {
                idCategoria.getNeumaticosList().remove(neumaticos);
                idCategoria = em.merge(idCategoria);
            }
            Almacenes idAlmacen = neumaticos.getIdAlmacen();
            if (idAlmacen != null) {
                idAlmacen.getNeumaticosList().remove(neumaticos);
                idAlmacen = em.merge(idAlmacen);
            }
            TiposBandaNeumatico idBanda = neumaticos.getIdBanda();
            if (idBanda != null) {
                idBanda.getNeumaticosList().remove(neumaticos);
                idBanda = em.merge(idBanda);
            }
            EstadosMedicion idEstadoMedicion = neumaticos.getIdEstadoMedicion();
            if (idEstadoMedicion != null) {
                idEstadoMedicion.getNeumaticosList().remove(neumaticos);
                idEstadoMedicion = em.merge(idEstadoMedicion);
            }
            List<DetalleAlineacion> detalleAlineacionList = neumaticos.getDetalleAlineacionList();
            for (DetalleAlineacion detalleAlineacionListDetalleAlineacion : detalleAlineacionList) {
                detalleAlineacionListDetalleAlineacion.setIdNeumatico(null);
                detalleAlineacionListDetalleAlineacion = em.merge(detalleAlineacionListDetalleAlineacion);
            }
            em.remove(neumaticos);
            em.getTransaction().commit();
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }

    public List<Neumaticos> findNeumaticosEntities() {
        return findNeumaticosEntities(true, -1, -1);
    }

    public List<Neumaticos> findNeumaticosEntities(int maxResults, int firstResult) {
        return findNeumaticosEntities(false, maxResults, firstResult);
    }

    private List<Neumaticos> findNeumaticosEntities(boolean all, int maxResults, int firstResult) {
        EntityManager em = getEntityManager();
        try {
            Query q = em.createQuery("select object(o) from Neumaticos as o");
            if (!all) {
                q.setMaxResults(maxResults);
                q.setFirstResult(firstResult);
            }
            return q.getResultList();
        } finally {
            em.close();
        }
    }

    public Neumaticos findNeumaticos(Integer id) {
        EntityManager em = getEntityManager();
        try {
            return em.find(Neumaticos.class, id);
        } finally {
            em.close();
        }
    }

    public int getNeumaticosCount() {
        EntityManager em = getEntityManager();
        try {
            Query q = em.createQuery("select count(o) from Neumaticos as o");
            return ((Long) q.getSingleResult()).intValue();
        } finally {
            em.close();
        }
    }
    
}
